package com.xmall.listener;

import cn.hutool.core.util.StrUtil;
import com.xmall.timer.manager.TimerTaskManager;
import org.springframework.scheduling.support.CronExpression;

import java.util.Properties;

/**
 * 配置更新处理器
 */
public interface IConfigChangeHandler {

    void handle(Properties properties);

    /**
     * 比较cron，不同就重启任务
     */
    default void compareCronAndRestartTask(TimerTaskManager timerTaskManager, String taskKey, String currentCron) {
        String prevCron = TimerTaskManager.taskCronMap.get(taskKey);

        if(StrUtil.isNotBlank(currentCron) && null != CronExpression.parse(currentCron)
            && !StrUtil.trim(prevCron).equals(StrUtil.trim(currentCron))) {
            timerTaskManager.restartTask(taskKey, currentCron);
        }
    }
}
